#include <iostream>
using namespace std;

// 1、设计英雄的结构体
struct Hero
{
    // 姓名
    string name;
    
    // 年龄
    int age;
    
    // 性别
    string sex;
};

// 冒泡排序，实现年龄的升序排列
void bubbleSort(Hero heroArray[], int len)
{
    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            if (heroArray[j].age > heroArray[j + 1].age)
            {
                Hero temp = heroArray[j];
                heroArray[j] = heroArray[j + 1];
                heroArray[j + 1] = temp;
            }
        }
    }
}

// 打印排序后的信息
void printHero(Hero heroArray[], int len)
{
    cout << "排序之后：" << endl;
    for (int i = 0; i < len; i++)
    {
        cout << "英雄姓名为：" << heroArray[i].name
             << "  年龄为：" << heroArray[i].age
             << "  性别为：" << heroArray[i].sex << endl;
    }
}

int main()
{
    // 2、创建一个数组，存放5名英雄
    Hero heroArray[5] =
        {
            {"刘备", 23, "男"},
            {"关羽", 22, "男"},
            {"张飞", 20, "男"},
            {"赵云", 21, "男"},
            {"貂蝉", 19, "女"}};

    // 英雄个数
    int len = sizeof(heroArray) / sizeof(heroArray[0]);

    // 打印信息
    cout << "排序之前：" << endl;
    for (int i = 0; i < len; i++)
    {
        cout << "英雄姓名为：" << heroArray[i].name
             << "  年龄为：" << heroArray[i].age
             << "  性别为：" << heroArray[i].sex << endl;
    }

    // 3、对数组进行排序，按照年龄升序
    bubbleSort(heroArray, len);

    // 4、打印排序后的结果
    printHero(heroArray, len);

    return 0;
}